/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ventanas;

import Offline.Deshacer;
import Online.Listas;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.border.Border;

/**
 * @author Alvaro Garcia Tapia
 * @author Pablo Mosquera Diaz
 * @author Victor Navarro Ortego
 * @author Adrian Neila Serrano
 * @author Daniel Sanchez Suarez
 * 
 * @proyecto Gestor de Tareas Online
 * @version 1.1
 */
public class VentanaLista extends JFrameConFondo implements ActionListener{
     //Creación de variables
	private JButton botonAceptar;	
        private JLabel labelNombre;
        private JTextField Nombre;
        private String nombre;
        private String user;
        private Ventana ventana;
        private int numLista;
        private int numListaactual;
        private ArrayList<Deshacer> deshacer = new ArrayList<Deshacer>();
        private boolean online;
        
        public VentanaLista(String user, final Ventana ventana, int numLista,int numListaactual
                            , ArrayList deshacer,boolean online){
            
            //constructor JFrame
            super("Nueva Lista");
            
            this.user = user;
            this.ventana = ventana;
            this.numLista = numLista;
            this.numListaactual = numListaactual;
            this.deshacer = deshacer;
            this.online = online;
            
            //Opciones de ventana
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
                //se añade la opción de preguntar antes de salir
                addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent evt) {
                        ventana.activar();
                        setVisible(false);
                        setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
                    }
                });
		setLayout(null);
		setSize(370,170);
                setLocationRelativeTo(null);
		Container contenidoPanel = getContentPane();
		contenidoPanel.setBackground(Color.LIGHT_GRAY);
                setImagen("objetos/fondo.jpg");
                setIconImage(new ImageIcon(getClass().getResource("objetos/icono.png")).getImage()); 
                

                
                //Cuadrante de introducción de nombre
		labelNombre = new JLabel("Nombre:");
                labelNombre.setBounds(50,25,300,10);
                labelNombre.setForeground(Color.white);
		this.Nombre = new JTextField();
		this.Nombre.setBounds(50,40,200,20);
                this.Nombre.setActionCommand("New");
                this.Nombre.addActionListener(this);
                
                //Constucción del boton Aceptar
		botonAceptar = new JButton("Aceptar"); 
		contenidoPanel.add(botonAceptar);
		botonAceptar.setBounds(230,80,80,25);
                botonAceptar.setActionCommand("New");
		botonAceptar.addActionListener(this);
                botonAceptar.setIcon(new ImageIcon(getClass().getResource("objetos/Aceptar Tarea.jpg")));
                
                JTextField text = new JTextField() {
		    @Override public void setBorder(Border border) {
		    }
		};
                
                getContentPane().add(labelNombre);
		getContentPane().add(this.Nombre);
                
                setVisible(true);
        
        }
        
        
        public void actionPerformed(ActionEvent e) {
        
         //Variable qu contiene que boton se ha pulsado
         String comando = e.getActionCommand();
         String name = "";
         //Si se pulso el boton aceptar
            if (comando.equals("New")){
               if (!this.Nombre.getText().equals("")){
                    //name y pass adquieren los valores indicados
                    name = this.Nombre.getText();
                    
                    //Se crea el objeto que se conectara a la bbdd para tareas
                    Listas listas = new Listas();
                    boolean salir = false;
                    //Si no se ha conectado
                    while (!listas.estado() && !salir){
                        this.setCursor(Cursor.WAIT_CURSOR);
                        String message = "Fallo al conectar con el servidor.\n¿Desea volver a intentar conectar?";
                        String title = "Error de conexión";
                        //Se ofrece la opcion de reconectar
                        int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
                        this.setCursor(Cursor.DEFAULT_CURSOR);
                        //Si rechazo reconectar
                        if (reply == JOptionPane.NO_OPTION){     
                            this.setCursor(Cursor.WAIT_CURSOR);
                            salir=true;
                            new VentanaInicio();
                            this.ventana.setVisible(false);
                            this.ventana.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                            setVisible(false);
                            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                            this.setCursor(Cursor.DEFAULT_CURSOR);
                        }
                        //Si se acepto reconectar
                        else{
                            this.setCursor(Cursor.WAIT_CURSOR);
                            //Se reconecta
                            listas = new Listas();
                            this.setCursor(Cursor.DEFAULT_CURSOR);
                        }       
                    }
                
                    //Se comprueba que el nombre de la tarea este libre
                    String[] list = listas.getListas(user);
                    boolean error = false;
                    for(int i=0;i<list.length && list[i]!=null;i++)
                        if (list[i].equals(name)){
                            JOptionPane.showMessageDialog (null,"El nombre de la lista ya está en uso.",
                                	"Atención", JOptionPane.INFORMATION_MESSAGE);
                            error = true;
                        }
                    if (!error){
                        //Se añade la lista nueva
                        listas.addLista(user+name, name, user);
                        //Se actualiza la tabla
                        ventana.ActualizarTablas(numLista-1,0,deshacer,online);
                        //Se cierra la ventana
                        setVisible(false);
                        setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
                    }
                }
               else
                   JOptionPane.showMessageDialog (null,"Debe indicar un nombre para la lista.",
                                	"Atención", JOptionPane.INFORMATION_MESSAGE);
            }
    }
        
}
